//app.js
import request from './request/index'
//使用 async await 语法必须引入，固定写法。
import regeneratorRuntime from './utils/runtime'
App({
   onLaunch: async function () {
    /**
     * 云环境初始化
     */
    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力')
    } else {
      wx.cloud.init({
        // env 参数说明：
        //   env 参数决定接下来小程序发起的云开发调用（wx.cloud.xxx）会默认请求到哪个云环境的资源
        //   此处请填入环境 ID, 环境 ID 可打开云控制台查看
        //   如不填则使用默认环境（第一个创建的环境）
        // env: 'my-env-id',
        traceUser: true,
      })
    }

    //初始化全局变量
    this.globalData = {
      backgroundAudioManager: null,//背景音乐实例
      musicId: '',//音乐id
      playList: [],//当前歌单
      index: 0,//当前播放歌曲下标
      openid: "",//用户的openid
      userInfo: {},//用户信息
    }

    /**
     * 调用云函数获取用户openid判断用户是否登录过
     * 在login页面第一次登录时，成功后会将用户openid
     * 存储起来作为用户不是第一次登录的标识
     */
    const result1 = await wx.cloud.callFunction({
      name: "getopenid"
    })
    //将openid保存到全局变量
    this.globalData.openid = result1.result.openid
    //通过openid和cookie判断是否自动登录
    const db = wx.cloud.database()
    const user_account = db.collection("user_account")

    const result2 = await user_account
      .where({
        _openid: result1.result.openid
      })
      .get()
    //查询到的用户数据(包括账号密码等)
    const data = result2.data
    //本地存储的cookie
    const cookie = wx.getStorageSync("cookie")
    //如果查询到数据且有cookie则自动登录
    if (data.length !== 0 && cookie) {
      const { phone, password } = data[0] //获取账号密码
      const result3 = await request({
        url: 'login/cellphone',
        data: { phone, password }
      }, true)
      //登录失败，账号或密码错误（未考虑请求没有发送成功的情况）
      if (result3.data.code !== 200) {
        //自动跳转到登录页面，手动登录
        return
      }
      //登录成功
      const {
        province, city, nickname, userId,
        backgroundUrl, avatarUrl, signature, gender, birthday
      } = result3.data.profile
      const userInfo = {
        province, city, nickname, userId,
        backgroundUrl, avatarUrl, signature, gender, birthday
      }
      //将用户信息保存到全部变量中
      this.globalData.userInfo = userInfo
      //将cookie存储到storage
      wx.setStorageSync("cookie",
      result3.header["Set-Cookie"] || result3.header["set-cookie"]
      )
      //将用户信息保存到本地，好像并什么卵用(自信的把好像去掉🙄)
      wx.setStorageSync("userInfo", userInfo)
      //跳转到index页面(发现页面)
      wx.switchTab({ url: '/pages/index/index' })
    }


    //   .then(result => {
    //   //将openid保存到全局变量
    //   this.globalData.openid = result.result.openid
    //   // 通过openid和cookie判断用户是否登录过
    //   const db = wx.cloud.database()
    //   const user_account = db.collection("user_account")
    //   user_account
    //     .where({
    //       _openid: result.result.openid
    //     })
    //     .get()
    //     .then(async result => {
    //       const data = result.data //查询到的用户数据
    //       const cookie = wx.getStorageSync("cookie") //本地存储的cookie
    //       if (data.length !== 0 && cookie) {
    //         // 进行登录
    //         const { phone, password } = data[0] //获取账号密码
    //         const result1 = await request({ url: 'login/cellphone', data: { phone, password } }, true)
    //         //登录失败，账号或密码错误（未考虑请求没有发送成功的情况）
    //         if (result1.data.code !== 200) {
    //           //自动跳转到登录页面，手动登录
    //           return
    //         }
    //         //登录成功
    //         const {
    //           province, city, nickname, userId,
    //           backgroundUrl, avatarUrl, signature, gender, birthday
    //         } = result1.data.profile
    //         const userInfo = {
    //           province, city, nickname, userId,
    //           backgroundUrl, avatarUrl, signature, gender, birthday
    //         }
    //         this.globalData.userInfo = userInfo
    //         wx.setStorageSync("cookie", result1.header["Set-Cookie"] || result1.header["set-cookie"]);
    //         wx.setStorageSync("userInfo", userInfo);
    //         //跳转到index页面(发现页面)
    //         wx.switchTab({ url: '/pages/index/index' });
    //       }
    //     })
    // })
}
})
